﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <assert.h>
using namespace std;

//int main()
//{
//	cout << "hello linux!" << endl;
//
//	return 0;
//}
#include <string.h>

//int main()
//{
//	char str1[] = "abcdef";
//	char str2[] = "abcdef";
//	char str3[] = "abcdefg";
//	printf("%d", strcmp(str1, str2));
//	printf("%d", strcmp(str2, str3));
//	return 0;
//}

//bool canPermutePalindrome(char* s)
//{
//    char* p1 = s;
//    char* p2 = s;
//    int flag = 0;
//    while (*p2 != '\0')
//    {
//        while (*p1 != *p2 && *p1 != '\0' || p1 == p2)
//        {
//            p1++;
//        }
//        if (*p1 == '\0')
//        {
//            flag++;
//        }
//        p2++;
//        p1
//    }
//    if (flag <= 1)
//    {
//        return true;
//    }
//    return false;
//}

#include <stdio.h>
#include <string.h>
void Swap(char* p1, char* p2)
{
    char tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}
int partsort(char* s, int left, int right)//˿
{
    int keyi = left;
    int prev = left;
    int cur = left + 1;
    while (cur <= right)
    {
        if (s[cur] < s[keyi] && ++prev != cur)
        {
            Swap(&s[cur], &s[prev]);
        }
        ++cur;
    }
    Swap(&s[keyi], &s[prev]);
    return prev;
}
void QuickSort(char* s, int left, int right)
{
    if (left >= right)
    {
        return;
    }
    int keyi = partsort(s, left, right);

    QuickSort(s, left, keyi - 1);
    QuickSort(s, keyi + 1, right);
}